package com.java.test3;

import java.util.Scanner;

public class StudentManager {

	// 属性：学生信息集合对象
	private Student[] arrStus;

	// 构造方法
	public StudentManager() {
		super();

	}

	// 行为

	/**
	 * 总的行为
	 */

	public void showAll() {
		init();
		bubbleSort();
		printMe();
	}

	/**
	 * (1)初始化:数据录入
	 */
	private void init() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要排序的学生人数：");
		int count = sc.nextInt();// 从控制台输入学生人数,因为要以学生人数来做一个数组

		// 根据学生人数创建数组，此处初始化的是成员变量，而不是局部变量
		arrStus = new Student[count];

		// 添加数据，从控制台输入
		for (int i = 0; i < count; i++) {
			System.out.println("请输入第" + (i + 1) + "个学生的名字");
			String name = sc.next();
			System.out.println("请输入第" + (i + 1) + "个学生的学号");
			String num = sc.next();
			System.out.println("请输入第" + (i + 1) + "个学生的成绩");
			Double stuscore = sc.nextDouble();
			// 根据输入的参数，构建一个Student的实例对象
			Student stu = new Student(name, num, stuscore);
			// 把创建的学生对象放到数组中
			arrStus[i] = stu;
		}
	}

	/**
	 * (2)冒泡排序
	 */
	public void bubbleSort() {
		// 外层for循环：轮数
		for (int i = 0; i < arrStus.length; i++) {
			// 内层for循环：完成两两比较交换
			for (int j = 0; j < arrStus.length - 1 - i; j++) {
				// 两两比较交换，排序规则：从大到小
				if (arrStus[j].getStuscore() < arrStus[j + 1].getStuscore()) {
					// 两个数进行交换
					Student temp = arrStus[j];
					arrStus[j] = arrStus[j + 1];
					arrStus[j + 1] = temp;
				}
			}
		}
	}

	/**
	 * (3)打印输出
	 */
	public void printMe() {
		for (Student i : arrStus) {
			i.printMe();
		}
		System.out.println();
	}
	// getter，setter

}
